package com.shyroke.daydayzhuansvc.util;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;

/**
 * 类名 ： redis工具类
 * 用法 ：
 * 创建人 ： shyroke
 * 时间：2019/1/29 15:38
 */
@Component
public class RedisUtils {

    @Autowired
    private RedisTemplate redisTemplate;

    public static RedisUtils redisUtils;

    @PostConstruct
    public void init(){
        redisUtils = this;
        redisUtils.redisTemplate = this.redisTemplate;
    }


    /**
     * 读取redis中集合类型的数据，如果缓存中存在，则直接返回，如果不存在则返回null
     * @param redisKey 缓存的key
     * @return
     */
    public static List readList(String redisKey){
        List result = null;

        //1、判断缓存中是否存在
        boolean flag = redisUtils.redisTemplate.hasKey(redisKey);

        if(flag){
            //从缓存中读取
            result = (List) redisUtils.redisTemplate.opsForValue().get(redisKey);
            return result;
        }

        return result == null?null:new ArrayList(result);

    }

    /**
     * 读取redis中OBJECT类型的数据，如果缓存中存在，则直接返回，如果不存在则返回null
     * @param redisKey 缓存的key
     * @return
     */
    public static Object readObj(String redisKey){

        Object obj = null;

        //1、判断缓存中是否存在，存在则从缓存中读取，否则查询数据库再插入缓存中。
        boolean flag = redisUtils.redisTemplate.hasKey(redisKey);

        if(flag){
            //从缓存中读取
            obj = (Object) redisUtils.redisTemplate.opsForValue().get(redisKey);
            return obj;
        }

        return obj;

    }

}
